TB24 - EditÉtÉBÅ[ÉãÉhÇïœçXÇ∑ÇÈÇΩÇflÇ…'ictb'ÇégópÇ∑ÇÈ

Åi25-October-96Åj

Q: ÇQǬÇÃEdit TextÉtÉBÅ[ÉãÉhÇéùǬÉ_ÉCÉAÉçÉOÉ{ÉbÉNÉXÇçÏê¨ÇµÅAǪÇÍÇÁÇÃÉtÉHÉìÉgÇGenevaÇÃ10É|ÉCÉìÉgÇ…ïœçXÇ∑ÇÈÇΩÇflÇ…'ictb'ÉäÉ\Å[ÉXÇégópǵǃǢNjÇ∑ÅBï∂éöë}ì¸É|ÉCÉìÉgÇÇQî‘ñ⁄ÇÃÉtÉBÅ[ÉãÉhÇ…à⁄ìÆÇµÇƒÇPï∂éöçÌèúÇ∑ÇÈÇΔÅAçÌèúǵÇΩï∂éöÇÃíºëOÇÃï∂éöÇ™ÇQÉsÉNÉZÉãâ∫Ç…à⁄ìÆÇµÇƒè„èëÇ´Ç≥ÇÍÇ‹Ç∑ÅBǫǧÇ∑ÇÍÇŒÇÊÇ¢Ç≈ǵÇÂǧǩÅH

A: DZÇÍÇÕÅADialog ManagerÇ™'ictb'ÇÉTÉ|Å[ÉgÇ∑ÇÈǪÇÃï˚ñ@Ç…ÇÊÇËî≠ê∂Ç∑ÇÈñ‚ëËÇ≈Ç∑ÅBDialog ManagerÇÕÅA'ictb'Ç…ÉXÉgÉAÇ≥ÇÍǃǢÇÈÉtÉHÉìÉgÇΔÉtÉHÉìÉgÉTÉCÉYÇÃèÓïÒÇì¸ÇÍä∑ǶÇÈÇΔÇ´Ç…ÅATextEditÉåÉRÅ[ÉhÇÃÇ¢Ç≠ǬǩÇÃÉtÉBÅ[ÉãÉhÇÉäÉZÉbÉgǵNjÇπÇÒÅB'ictb'Ç…éwíËÇ≥ÇÍǃǢÇÈÉtÉHÉìÉgÉTÉCÉYÇΔÉ}ÉbÉ`Ç∑ÇÈÇÊǧDžÅATextEditÉåÉRÅ[ÉhÇÃfontAscentÇ®ÇÊÇ—lineHeightÉtÉBÅ[ÉãÉhÇÉäÉZÉbÉgÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBÉfÉtÉHÉãÉgÇ≈ÇÕÅAǪÇÍÇÁÇÃÉtÉBÅ[ÉãÉhÇÕChicago 12É|ÉCÉìÉgÇÃlineHeightÇ®ÇÊÇ—fontAssentÇÃílÇ…ÉZÉbÉgÇ≥ÇÍǃǢNjÇ∑ÅB

à»â∫ÇÃÉRÅ[ÉhÇÕÅATextEditÉåÉRÅ[ÉhÇÇ«ÇÃólÇ…ÉZÉbÉgÇ∑ÇÈÇ©Çé¶Ç∑LJÇÃÇ≈Ç∑ÅB

//------------------------------------------------------------------
static void SetUpEditField (DialogRef dlog,short fontNum,short fontSize)
//------------------------------------------------------------------
{
  FontInfo  info;
  DialogPeek  dpeek = (DialogPeek)dlog;

  if (dpeek != nil) {
    TEHandle te = dpeek->textH;       //TEHandleÇÃéÊìæ

    if (te != nil) {
      short oldFont = dlog->txFont;   //å√Ç¢èÓïÒÇÃï€ë∂
      short oldSize = dlog->txSize;

      TextFont(fontNum);              //portÇ…ê≥ǵǢÉtÉHÉìÉgèÓïÒÇÉZÉbÉg
      TextSize(fontSize);

      GetFontInfo(&info);

      // Ç≥ǃÅADialog ManagerÇ™12É|ÉCÉìÉgÇÃèÓïÒÇécǵÇΩNjNjǻÇÃÇ≈ÅA
      // TEÉåÉRÅ[ÉhÇfixǵNjǵÇÂǧǩ

      te[0]->txFont   = fontNum;        // ÉtÉHÉìÉgÇÉZÉbÉg
      te[0]->txSize     = fontSize;
      te[0]->lineHeight = info.ascent + info.descent + info.leading;
	//ê≥ǵǢèÓïÒÇåvéZ
      te[0]->fontAscent = info.ascent ;
      TextFont(oldFont);  //ÉtÉHÉìÉgèÓïÒÇÉäÉZÉbÉg
      TextSize(oldSize);
    }
  }
}

//------------------------------------------------------------------
static  short DoDialog(short resID)
//------------------------------------------------------------------
{
  DialogRef		dlog;
  GrafPtr		oldPort;
  short			itemHit = 0;

  GetPort(&oldPort);
  dlog = GetNewDialog(resID,nil,(WindowRef)-1);
  if (dlog) {
    SetPort(dlog);
    SelectDialogItemText(dlog,2,0x8000,0x8000); //ÉJÅ[É\ÉãÇÃÉZÉbÉg
    SetUpEditField(dlog,geneva,10);             // EditÉtÉBÅ[ÉãÉhÇÃÉZÉbÉg
    (void)SetDialogDefaultItem(dlog,1);         // OKÉ{É^ÉìÇÃÉnÉCÉâÉCÉg
    ShowWindow(dlog);                           // É_ÉCÉAÉçÉOÇÃï\é¶
    while (itemHit != ok) {
      ModalDialog(nil,&itemHit);
    }
    SetPort(oldPort);
    DisposeDialog(dlog);
  }
  return itemHit;
}

[ Technical Q&A's : Operating System Services : Toolbox : TB24 ]